ARD2  1.00 for Rev B. Hardware
Airbag Reference Demonstrator using MPC5604P
MMA51xx.h
Go to the documentation of this file.
00001 
00017 #ifndef MMA51XX_H_
00018 #define MMA51XX_H_
00019 /*
00020  **************************************************************
00021  * Defines, Macros and Typedefs 
00022  **************************************************************/
00023 /*** Constant Macros ***/
00024 /* Default Yes and No defines */
00025 #ifndef TRUE
00026 #define TRUE (1u)
00027 #endif
00028 #ifndef CLEAR
00029 #define CLEAR (0u)
00030 #endif
00031 #ifndef BITS_IN_NIBBLE
00032 #define BITS_IN_NIBBLE (4u)
00033 #endif
00034 #ifndef BITS_IN_BYTE
00035 #define BITS_IN_BYTE (8u)
00036 #endif
00037 #ifndef BYTES_IN_16
00038 #define BYTES_IN_16  (2u)
00039 #endif
00040 #ifndef BYTES_IN_32
00041 #define BYTES_IN_32  (4u)
00042 #endif
00043 
00044 #ifndef BIT_DEFINITION
00045 #define BIT_DEFINITION
00046 #define BIT0  (1u << 0u)
00047 #define BIT1  (1u << 1u)
00048 #define BIT2  (1u << 2u)
00049 #define BIT3  (1u << 3u)
00050 #define BIT4  (1u << 4u)
00051 #define BIT5  (1u << 5u)
00052 #define BIT6  (1u << 6u)
00053 #define BIT7  (1u << 7u)
00054 #define BIT8  (1u << 8u)
00055 #define BIT9  (1u << 9u)
00056 #define BIT10 (1u << 10)
00057 #define BIT11 (1u << 11)
00058 #define BIT12 (1u << 12)
00059 #define BIT13 (1u << 13)
00060 #define BIT14 (1u << 14)
00061 #define BIT15 (1u << 15)
00062 #define BIT16 (1u << 16)
00063 #define BIT17 (1u << 17)
00064 #define BIT18 (1u << 18)
00065 #define BIT19 (1u << 19)
00066 #define BIT20 (1u << 20)
00067 #define BIT21 (1u << 21)
00068 #define BIT22 (1u << 22)
00069 #define BIT23 (1u << 23)
00070 #define BIT24 (1u << 24)
00071 #define BIT25 (1u << 25)
00072 #define BIT26 (1u << 26)
00073 #define BIT27 (1u << 27)
00074 #define BIT28 (1u << 28)
00075 #define BIT29 (1u << 29)
00076 #define BIT30 (1u << 30)
00077 #define BIT31 (1u << 31)
00078 #endif
00079 /*** Function Macros ***/
00080 #ifndef N_ELEMENTS
00081 #define N_ELEMENTS(X)           (sizeof(X)/sizeof(*(X)))
00082 #endif
00083 
00084 /* Defines for status */
00085 #define MMA5100_SENSOR_READY_STATUS  BIT15
00086 #define MMA5100_SENSOR_READY_UNLOCKED_STATUS (MMA5100_SENSOR_READY_STATUS | BIT14)
00087 #define MMA5100_SENSOR_DEFECT_STATUS BIT13
00088 #define MMA5100_SENSOR_BUSY_STATUS   BIT12
00089 #define MMA5100_COMMAND_NOT_RECOGNIZED BIT11
00090 
00091 /* Defines for raw data - straight from the spec */
00092 #define MMA5100_SENSOR_DEFECT ((uint16_t)0x1F4)
00093 #define MMA5100_SENSOR_BUSY ((uint16_t)0x1e8)
00094 #define MMA5100_SENSOR_READY ((uint16_t)0x1e7)
00095 #define MMA5100_SENSOR_READY_UNLOCKED ((uint16_t)0x1e6)
00096 
00097 
00098 #define MMA5100_DATA_INDICATOR ((uint16_t)0x10u)
00099 #define MMA5100_CONTENTS_MASK  ((uint16_t)0x0Fu)
00100 #define MMA5100_N_REGISTERS ((uint8_t)19u) /* Size of MMA5100_REGISTER_INDEX */
00101 #define MMA5100_UL_FOR_DATA ((uint16_t)0x220u)
00102 #define MMA5100_LL_FOR_DATA ((uint16_t)0x1FFu)
00103 #define MMA5100_UL_FOR_STATUS ((uint16_t)0x200u)
00104 #define MMA5100_LL_FOR_STATUS ((uint16_t)0x1E0u)
00105 
00106 
00107 /*** Enums ***/
00108 enum MMA5100_REGISTER_INDEX
00109 {
00110   PROTOCOL = 0, N_DATA_BLOCKS, MANUFACTURER, SENSOR_TYPE, AXIS, RANGE, DEVCFG2,
00111   PRODUCT_REVISION, DEVCFG6, PROD_DATE_1, PROD_DATE_2, SN0, SN1, SN2, SN3,
00112   INIT_RAW_OFFSET, COMBINED_OFFSET_SELF_TEST, AVG_SELF_TEST, DEVCFG1
00113 };
00114 enum MMA5100_RAW_DATA_INDEX
00115 {
00116   MMA5100_D1 = 0, MMA5100_D2, MMA5100_D3, MMA5100_D4, MMA5100_D5, MMA5100_D6,
00117   MMA5100_D7, MMA5100_D8, MMA5100_D9, MMA5100_D10, MMA5100_D11, MMA5100_D12,
00118   MMA5100_D13, MMA5100_D14, MMA5100_D15, MMA5100_D16, MMA5100_D17, MMA5100_D18,
00119   MMA5100_D19, MMA5100_D20, MMA5100_D21, MMA5100_D22, MMA5100_D23, MMA5100_D24,
00120   MMA5100_D25, MMA5100_D26, MMA5100_D27, MMA5100_D28, MMA5100_D29, MMA5100_D30,
00121   MMA5100_D31, MMA5100_D32
00122 };
00123 /*** TypeDefs ***/
00124 
00125 /*
00126  **************************************************************
00127  * Declarations 
00128  **************************************************************/
00129 /*** Global ***/
00130 /*** Static ***/
00131 
00132 /*** Constant ***/
00133 /*
00134  **************************************************************
00135  * Function Prototypes 
00136  **************************************************************/
00137 /*
00138  ******************************************************************************
00139  *
00140  * Function:          u16fnMMA5100TreatData()
00141  *
00142  */
00166 uint16_t u16fnMMA5100TreatData(uint16_t* pu16SatData,
00167                                uint8_t* pu8ResultArray,
00168                                uint8_t* pu8CurrentIndex,
00169                                uint8_t* pu8IndexAdder,
00170                                uint32_t* pu32AlreadyWritten);
00171 #endif /* MMA51XX_H_ */